package Leetcode.StackAndQueue.bracketsIsValid20;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
 * <p>
 * 有效字符串需满足：
 * <p>
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 * 注意空字符串可被认为是有效字符串。
 */

public class Solution {
    public boolean isValid(String s) {
        if (s == null) {
            return true;
        }
        char[] string = s.toCharArray();
        Stack brackets = new Stack();
        for (int i = 0; i < string.length; i++) {
            if (string[i] == '(' || string[i] == '[' || string[i] == '{') {
                brackets.push(string[i]);
            }
            if (string[i] == ')' || string[i] == ']' || string[i] == '}') {
                if(brackets.isEmpty()) {
                    return false;
                }
                char a = (char) brackets.pop();
                if (string[i] == ')' && a == '(') {
                    continue;
                } else if (string[i] == ']' && a == '[') {
                    continue;
                } else if (string[i] == '}' && a == '{') {
                    continue;
                } else {
                    return false;
                }
            }
        }
        return brackets.isEmpty();
    }

    public static void main(String[] args) {
        String a = "]";
        Solution solution = new Solution();
        System.out.println(solution.isValid(a));
    }
}
